﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using main.sdk.display.object2d;

namespace main.sdk.utils.animations2D
{
    public abstract class Animation2D
    {
        public bool ForceFinished = false;

        /**
         * Verifica se a animação está ativa.
         */
        protected virtual bool IsActive() { return false; }

        /**
         * Verifica se pode passar imediatamente para a próxima animação ao terminar essa.
         */
        public virtual bool IsSkip() { return true; }

        /**
         * Inicializa a animação
         * 
         * @param obj - O Objeto da animação.
         */
        public virtual void Setup(Object2D obj) {}

        /**
         * Atualiza a animação.
         * 
         * @param Time - Tempo que passou.
         */
        public virtual void Update(double Time) {}

        /**
         * Verifica se a animação terminou.
         */
        public bool Active() 
        {
            if (ForceFinished)
                return false;
            return IsActive();
        }

        /**
         * Verifica se a animação terminou.
         */
        public bool Finished() { return (!Active()); }
    }
}
